-- 查看系统设定
local httparg               = require("shared.api.httparg")
local response              = require("shared.api.response")
local config                = require("config")
local tag                   = httparg.tag()
local assertion             = httparg.assertion
local util                  = require "proxy.game.common.util"
local fill_response_header  = util.fill_response_header
local is_match_content_type = util.is_match_content_type


local cjson                 = require "cjson.safe"
      cjson.encode_max_depth(32)
      cjson.decode_max_depth(32)


local ARGS = {
  tag.body('json', 'required'),

  query    = tag.json.query     ('map'),
  version  = tag.json.version   ('string', assertion.non_nan_nor_inf(),assertion.non_negative_number()),
  }

local result ={}
do
  local httpclient = require "shared.http.client"
  local location  = config.ENV.DATAGATE_SERVICE .. "/settings"
  local headers   = ngx.req.get_headers()
  local query     = nil
  local method    = "VIEW"
  local bodyMap   = {}

        bodyMap.version = ARGS.version
        bodyMap.query   = ARGS.query
  local requestData     = cjson.encode(bodyMap)
  local resp, err       = httpclient.new()
                              :uri(location)
                              :headers(headers)
                              :query(query)
                              :body(requestData)
                              :send(method, 2000, nil)

  if err or (not resp) then
      ngx.status = 500
      ngx.say(err)
      ngx.exit(ngx.OK)
  end


  if not resp.body
          or not resp.headers
          or resp.status ~= 200
          or not is_match_content_type(resp, 'application/json')  then

      ngx.status = resp.status
      fill_response_header(resp.headers)
      ngx.say(resp.body)
      ngx.exit(ngx.OK)
  end

  local respBody
  local get_content_decoder   = util.get_content_decoder
  local contentDecoder        = get_content_decoder(resp)
  if contentDecoder then
        respBody = contentDecoder.decode(resp.body)
  else
      -- 这儿理论上不应该出错
      ngx.status = 500
      ngx.say(err)
      ngx.exit(ngx.OK)
  end
  result.settings = respBody.settings
end

  response.success(result)










